#ifndef PHOTOVOLTAIC_H
#define PHOTOVOLTAIC_H
#define _USE_MATH_DEFINES  // 新增：启用M_PI常量
#include "component.h"
#include <QVector>
#include <cmath>

class Photovoltaic : public Component
{
private:
    double maxCapacity;         // 最大发电容量
    QVector<double> powerForecast; // 功率预测曲线
    double temperature;         // 温度（影响效率）
    double irradiation;         // 光照强度

public:
    // 构造函数
    Photovoltaic(const QString& name, double capacity = 500.0);

    // 析构函数
    ~Photovoltaic();

    // 设置功率预测曲线
    void setPowerForecast(const QVector<double>& forecast);

    // 获取功率预测曲线
    QVector<double> getPowerForecast() const;

    // 获取指定时间的预测功率
    double getForecastPower(int timeIndex) const;

    // 设置最大容量
    void setMaxCapacity(double capacity);

    // 获取最大容量
    double getMaxCapacity() const;

    // 设置温度
    void setTemperature(double temp);

    // 获取温度
    double getTemperature() const;

    // 设置光照强度
    void setIrradiation(double irrad);

    // 获取光照强度
    double getIrradiation() const;

    // 计算当前理论最大功率（基于温度和光照）
    double calculateTheoreticalMax() const;

    // 更新当前功率（基于预测曲线和时间）
    void updatePower(int timeIndex);

    // 重写基类的获取状态方法
    QString getStatus() const override;
};

#endif // PHOTOVOLTAIC_H
